{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (x,y) 到$ 直线Ax+By+C的距离为\\ \\frac{|Ax+By+C|}{\\sqrt{A^2+B^2}}$\n",
    "### 拓展到n维空间 $\\theta^T x_b=0 ---> w^Tx+b=0$\n",
    "### $\\frac{w^Tx+b}{\\|w\\|}, \\|w\\|=\\sqrt{w^2_1+w^2_2+\\dots+w^2_n}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hard Margin SVM :\n",
    "### $min\\frac{1}{2}\\|w\\|^2$\n",
    "### $s.t.\\ \\ \\ y^{(i)}(w^Tx^{(i)}+b) \\geq 1$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Soft Margin SVM :\n",
    "### $min\\frac{1}{2}\\|w\\|^2 + C \\sum_{i=1}^m\\zeta_i$  , 多了一个L1正则化项(C是一个新的超参数)\n",
    "C越小,容错空间越大, 越hard\n",
    "### $min\\frac{1}{2}\\|w\\|^2 + C \\sum_{i=1}^m\\zeta_i^2$  , L2正则\n",
    "### $s.t.\\ \\ \\ y^{(i)}(w^Tx^{(i)}+b) \\geq 1-\\zeta_i$\n",
    "#### $\\zeta_i \\geq 0$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 注意!使用SVM要做数据标准化处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Scikit-learn中的SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris = datasets.load_iris()\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "\n",
    "X = X[y<2, :2]\n",
    "y = y[y<2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bb44801ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0], X[y==0,1], color='red')\n",
    "plt.scatter(X[y==1,0], X[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "standard_scaler = StandardScaler()\n",
    "standard_scaler.fit(X)\n",
    "X_standard = standard_scaler.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=1000000000.0, class_weight=None, dual=True, fit_intercept=True,\n",
       "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
       "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
       "     verbose=0)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "svc = LinearSVC(C=1e9)  #hard svm\n",
    "svc.fit(X_standard, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_boundary(model, axis):\n",
    "    x0, x1 = np.meshgrid(\n",
    "        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)),\n",
    "        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100))\n",
    "    )\n",
    "    x_new = np.c_[x0.ravel(), x1.ravel()]\n",
    "    \n",
    "    y_predict = model.predict(x_new)\n",
    "    zz = y_predict.reshape(x0.shape)\n",
    "    from matplotlib.colors import ListedColormap\n",
    "    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])\n",
    "    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\fangyang\\Anaconda3\\lib\\site-packages\\matplotlib\\contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n",
      "  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bb448d2208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(svc, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=0.01, class_weight=None, dual=True, fit_intercept=True,\n",
       "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
       "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
       "     verbose=0)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把C变小, 更soft, 容错空间更大\n",
    "svc2 = LinearSVC(C=0.01)\n",
    "svc2.fit(X_standard, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\fangyang\\Anaconda3\\lib\\site-packages\\matplotlib\\contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n",
      "  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bb4480deb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(svc2, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.03239157, -2.49293474]])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.95363048])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_svc_decision_boundary(model, axis):\n",
    "    x0, x1 = np.meshgrid(\n",
    "        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)),\n",
    "        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100))\n",
    "    )\n",
    "    x_new = np.c_[x0.ravel(), x1.ravel()]\n",
    "    \n",
    "    y_predict = model.predict(x_new)\n",
    "    zz = y_predict.reshape(x0.shape)\n",
    "    from matplotlib.colors import ListedColormap\n",
    "    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])\n",
    "    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)\n",
    "    \n",
    "    w = model.coef_[0]\n",
    "    b = model.intercept_[0]\n",
    "    \n",
    "    # w0*x0 + w1*x1 + b = 0\n",
    "    # x1 = -w0/w1 * x0 - b/w1\n",
    "    plot_x = np.linspace(axis[0], axis[1], 200)\n",
    "    up_y = -w[0]/w[1] * plot_x - b/w[1] + 1/w[1]\n",
    "    down_y = -w[0]/w[1] * plot_x - b/w[1] - 1/w[1]\n",
    "    \n",
    "    up_index = (up_y >= axis[2]) & (up_y <= axis[3])\n",
    "    down_index = (down_y >= axis[2]) & (down_y <= axis[3])\n",
    "    plt.plot(plot_x[up_index], up_y[up_index], color='black')\n",
    "    plt.plot(plot_x[down_index], down_y[down_index], color='black')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\fangyang\\Anaconda3\\lib\\site-packages\\matplotlib\\contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n",
      "  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bb4480d160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_svc_decision_boundary(svc, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\fangyang\\Anaconda3\\lib\\site-packages\\matplotlib\\contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n",
      "  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bb4480dac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_svc_decision_boundary(svc2, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
